Today, computer systems that individually display video images usually allow individuals to make color adjustments. These color adjustments may include, for example, brightness, sharpness, tint and saturation. These individuals often expect to see the continuous color adjustments made immediately as they are watching the display.
Many video recording devices capture video at the same time the video images are being viewed. For example, one such device captures video and encodes the captured video data to generate MPEG encoded video, while allowing an individual to preview the captured images on a display and make color adjustments to those images. The preview is performed by decoding in MPEG encoded video on the system as it is being received. The user desires the preview of images to run seemingly uninterrupted, thereby showing the color adjustments nearly instantaneously. Likewise, the user desires the capture process to also run seemingly uninterrupted.
Some encoders may make color adjustments through programming. These encoders are often in video capture devices. For instance, if the capture device has a VRP MPEG encoder sold by C-Cube, programming color adjustments may be made by sending color adjustment commands to the encoder itself. However, to make the color adjusts, the user must stop the capture process. Continuous color adjustment is not quite possible because stopping and restarting MPEG capture process is a relatively long operation. In fact, the stopping the capture process is much longer than the time between two consecutive color adjustment requests coming from the requesting application.
Another constraint on some encoders is that the microcode being executed on the encoder cannot be interrupted in the middle of the sequence without corrupting the data. If the capture device has only one interface to the system, the sending of captured video and the receiving of programming must be over the same interface. If programming is sent to the capture device at the same time the capture device is executing its microcode or captured video is being sent over the shared interface, then the data may become corrupted. Therefore, to avoid corruption of data in the prior art, the capture process is stopped along with the video preview that is occurring. With the process stopped, the color adjustments cannot be viewed as they are occurring.
Another complication occurs when that MPEG capture process is controlled by a driver that is messages-driven. In this case, a request to stop the capture process means posting a message to the driver and waiting in a message loop until it is executed. This creates a re-entrancy problem when another color adjustment request is made while the previous request hasn't been completed yet.
The present invention provides for performing color adjustments without corrupting video data being captured and without corrupting programming being sent for making color adjustments. Also embodiments of the present invention are able to avoid the re-entrancy problems described above.